﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpasyncAndwait
{
    /// <summary>
    /// 
    /// async和await关键字实现异步
    /// 
    /// 作用：希望我们编写异步代码的时候，更加简洁
    /// 场景：其实你可以在任意你想用的同步的过程中，使用这个关键字。还有某些特定场合，尤其是IO操作中用的多
    /// 
    /// async表示这个方法内部《异步调用》但是这个方法不见得是异步
    /// 结论：你在写异步的时候，就是和同步一样的感觉，这样能让你快速写出异步代码，提升你的开发效率
    /// 
    /// 
    /// </summary>
    internal class Program
    {
        static void Main(string[] args)
        {
            string content = GetText().Result;
            Console.WriteLine(content);

            Console.ReadLine();
        }

        async static Task<string> GetText()
        {
            FileStream fs = new FileStream("myFile.txt", FileMode.Open);
             byte[] filebytes = new byte[fs.Length];

            //异步读取（下面的任务我们可以用异步完成）
            await fs.ReadAsync(filebytes,0,filebytes.Length);

            //下面的内容是回调
            return Encoding.Default.GetString(filebytes);
        }
    }
}
